#ifndef DWM_LOGGING_H
#define DWM_LOGGING_H 1

#include <string>
#include <ostream>

class LoggingService
{

  public:
    LoggingService(const std::string& n);


    // 1
    std::ostream& verbose();

    // 2
    std::ostream& debug();

    // 3 
    std::ostream& info();

    // 4 
    std::ostream& warning();

    // 5  
    std::ostream& error();

    // 6
    std::ostream& fatal();


    static void setOutputLevel(int l);

    static int outputLevel();

    static std::ostream& output(int l, const std::string& prefix);

  protected:
    std::string endl;

  private:
    static int s_output_level;

    static std::string s_levels[7];

    std::string m_log_prefix;




};


#endif
